package com.iflytek.sbd.demo.fanxing;

import java.util.ArrayList;

/**
 * @program: sbd
 * @description:
 * @author: 陈英俊
 * @create: 2022-01-11 09:44
 */
public class Demo {


    public static void main(String[] args) {
        //   System.out.println(add(2, 3));


        /**
         * ArrayList<Integer> == ArrayList<String> 是true
         * 表示 原始类型相等 泛型都被擦除了
         */
        ArrayList<Integer> list1 = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();
        System.out.println(list1.getClass() == list2.getClass());// true
    }

    /**
     * 如果不实现泛型,不同类型的数据操作需要重载很多方法
     * 就比如下面重写了三个方法,通过泛型,我么可以复用为一个方法
     */
    public static int add(int a, int b) {
        System.out.println(a + "+" + b + "=" + (a + b));
        return a + b;
    }

    public static float add(float a, float b) {
        System.out.println(a + "+" + b + "=" + (a + b));
        return a + b;
    }

    public static double add(double a, double b) {
        System.out.println(a + "+" + b + "=" + (a + b));
        return a + b;
    }

    public static <T extends Number> double add(T a, T b) {
        System.out.println(a + "+" + b + "=" + (a.doubleValue() + b.doubleValue()));
        return a.doubleValue() + b.doubleValue();
    }
}
